//package com.treasure.mall.zbq.common;
//
//import org.apache.commons.codec.binary.Hex;
////import sun.misc.BASE64Decoder;
////import sun.misc.BASE64Encoder;
//
//import javax.crypto.Cipher;
//import javax.crypto.KeyGenerator;
//import javax.crypto.SecretKey;
//import javax.crypto.SecretKeyFactory;
//import javax.crypto.spec.DESKeySpec;
//import java.io.IOException;
//import java.security.SecureRandom;
//
///**
// * des加密
// *
// * @author guomw
// */
//public class DesUtil {
//    private final static String DES = "DES";
//    private final static String ENCODE = "UTF-8";
//    private final static String defaultKey = "862c020870ae5158";
//
//
//    /**
//     * 使用 默认key 加密
//     *
//     * @return String
//     * @date 2019-2-26 下午02:46:43
//     */
//    public static String encrypt(String data) throws Exception {
//        byte[] bt = encrypt(data.getBytes(ENCODE), defaultKey.getBytes(ENCODE));
//        return new BASE64Encoder().encode(bt);
//    }
//
//    /**
//     * 使用 默认key 解密
//     *
//     * @return String
//     * @date 2015-3-17 下午02:49:52
//     */
//    public static String decrypt(String data) throws IOException, Exception {
//        if (data == null)
//            return null;
//        BASE64Decoder decoder = new BASE64Decoder();
//        byte[] buf = decoder.decodeBuffer(data);
//        byte[] bt = decrypt(buf, defaultKey.getBytes(ENCODE));
//        return new String(bt, ENCODE);
//    }
//
//    /**
//     * Description 根据键值进行加密
//     *
//     * @param data
//     * @param key  加密键byte数组
//     * @return
//     * @throws Exception
//     */
//    public static String encrypt(String data, String key) throws Exception {
//        byte[] bt = encrypt(data.getBytes(ENCODE), key.getBytes(ENCODE));
//        String strs = new BASE64Encoder().encode(bt);
//        return strs;
//    }
//
//    /**
//     * Description 根据键值进行解密
//     *
//     * @param data
//     * @param key  加密键byte数组
//     * @return
//     * @throws IOException
//     * @throws Exception
//     */
//    public static String decrypt(String data, String key) throws IOException,
//            Exception {
//        if (data == null)
//            return null;
//        BASE64Decoder decoder = new BASE64Decoder();
//        byte[] buf = decoder.decodeBuffer(data);
//        byte[] bt = decrypt(buf, key.getBytes(ENCODE));
//        return new String(bt, ENCODE);
//    }
//
//    /**
//     * Description 根据键值进行加密
//     *
//     * @param data
//     * @param key  加密键byte数组
//     * @return
//     * @throws Exception
//     */
//    private static byte[] encrypt(byte[] data, byte[] key) throws Exception {
//        // 生成一个可信任的随机数源
//        SecureRandom sr = new SecureRandom();
//
//        // 从原始密钥数据创建DESKeySpec对象
//        DESKeySpec dks = new DESKeySpec(key);
//
//        // 创建一个密钥工厂，然后用它把DESKeySpec转换成SecretKey对象
//        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
//        SecretKey securekey = keyFactory.generateSecret(dks);
//
//        // Cipher对象实际完成加密操作
//        Cipher cipher = Cipher.getInstance(DES);
//
//        // 用密钥初始化Cipher对象
//        cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);
//
//        return cipher.doFinal(data);
//    }
//
//    /**
//     * Description 根据键值进行解密
//     *
//     * @param data
//     * @param key  加密键byte数组
//     * @return
//     * @throws Exception
//     */
//    private static byte[] decrypt(byte[] data, byte[] key) throws Exception {
//        // 生成一个可信任的随机数源
//        SecureRandom sr = new SecureRandom();
//
//        // 从原始密钥数据创建DESKeySpec对象
//        DESKeySpec dks = new DESKeySpec(key);
//
//        // 创建一个密钥工厂，然后用它把DESKeySpec转换成SecretKey对象
//        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
//        SecretKey securekey = keyFactory.generateSecret(dks);
//
//        // Cipher对象实际完成解密操作
//        Cipher cipher = Cipher.getInstance(DES);
//
//        // 用密钥初始化Cipher对象
//        cipher.init(Cipher.DECRYPT_MODE, securekey, sr);
//
//        return cipher.doFinal(data);
//    }
//
//    /**
//     * 将二进制转换成16进制
//     *
//     * @param buf
//     * @return
//     */
//    public static String parseByte2HexStr(byte buf[]) {
//        StringBuffer sb = new StringBuffer();
//        for (int i = 0; i < buf.length; i++) {
//            String hex = Integer.toHexString(buf[i] & 0xFF);
//            if (hex.length() == 1) {
//                hex = '0' + hex;
//            }
//            sb.append(hex.toUpperCase());
//        }
//        return sb.toString();
//    }
//
//    /**
//     * 将16进制转换为二进制
//     *
//     * @param hexStr
//     * @return
//     */
//    public static byte[] parseHexStr2Byte(String hexStr) {
//        if (hexStr.length() < 1) return null;
//        byte[] result = new byte[hexStr.length() / 2];
//        for (int i = 0; i < hexStr.length() / 2; i++) {
//            int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16);
//            int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2), 16);
//            result[i] = (byte) (high * 16 + low);
//        }
//        return result;
//    }
//
//    public static String getKey() {
//        try {
//            KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");
//            keyGenerator.init(56);
//            // 生成一个Key
//            SecretKey generateKey = keyGenerator.generateKey();
//            // 转变为字节数组
//            byte[] encoded = generateKey.getEncoded();
//            // 生成密钥字符串
//            String encodeHexString = Hex.encodeHexString(encoded);
//            return encodeHexString;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return "密钥生成错误.";
//        }
//    }
//
//
//    public static void main(String[] args) throws Exception {
//        System.out.println(getKey());
//        String data = "hallo123...";
//        String entryKey = encrypt(data, "4ab9378c2cbf9416");
//        System.err.println("a:" + entryKey);
//        System.out.println(decrypt(entryKey, "4ab9378c2cbf9416"));
////         System.err.println(decrypt(encrypt(data, "807fa7456deffd73"), "20dc2c40860b49a867j"));
////        System.out.println(decrypt("cHTYYesx8pk=","d5010719bcb39d94"));
////        System.out.println(encrypt(data));
////        System.out.println(getKey());
////        //System.out.println(decrypt(encrypt(data)));
//
//    }
//}
